static GtkWidget *window = NULL;
+static gboolean
+draw_color (GtkWidget *drawingarea,
+ cairo_t *cr,
+ const char *color_name)
+{
+ GdkRGBA rgba;
+
+ if (gdk_rgba_parse (&rgba, color_name))
+ {
+ gdk_cairo_set_source_rgba (cr, &rgba);
+ cairo_paint (cr);
+ }
+
+ return FALSE;
+}
+
static GtkWidget *
color_swatch_new (const gchar *color)
{
GtkWidget *button, *area;
- GdkRGBA rgba;
-
- gdk_rgba_parse (&rgba, color);
button = gtk_button_new ();
area = gtk_drawing_area_new ();
+ g_signal_connect (area, "draw", G_CALLBACK (draw_color), (gpointer) color);
gtk_widget_set_size_request (area, 24, 24);
- gtk_widget_override_background_color (area, 0, &rgba);
gtk_container_add (GTK_CONTAINER (button), area);
gtk_widget_show_all (button);